GdkFrameClockPhase phase;
guint in_paint_idle : 1;
+ guint paint_is_thaw : 1;
#ifdef G_OS_WIN32
guint begin_period : 1;
#endif
(priv)->updating_count > 0))
static void
-maybe_start_idle (GdkFrameClockIdle *clock_idle)
+maybe_start_idle (GdkFrameClockIdle *clock_idle,
+ gboolean caused_by_thaw)
{
GdkFrameClockIdlePrivate *priv = clock_idle->priv;
if (!priv->in_paint_idle &&
priv->paint_idle_id == 0 && RUN_PAINT_IDLE (priv))
{
+ priv->paint_is_thaw = caused_by_thaw;
priv->paint_idle_id = g_timeout_add_full (GDK_PRIORITY_REDRAW,
min_interval,
gdk_frame_clock_paint_idle,
{
priv->min_next_frame_time = compute_min_next_frame_time (clock_idle,
priv->frame_time);
- maybe_start_idle (clock_idle);
+ maybe_start_idle (clock_idle, FALSE);
}
if (priv->freeze_count == 0)
GdkFrameClockIdlePrivate *priv = clock_idle->priv;
priv->requested |= phase;
- maybe_start_idle (clock_idle);
+ maybe_start_idle (clock_idle, FALSE);
}
static void
#endif
priv->updating_count++;
- maybe_start_idle (clock_idle);
+ maybe_start_idle (clock_idle, FALSE);
}
static void
priv->freeze_count--;
if (priv->freeze_count == 0)
{
- maybe_start_idle (clock_idle);
+ maybe_start_idle (clock_idle, TRUE);
/* If nothing is requested so we didn't start an idle, we need
* to skip to the end of the state chain, since the idle won't
* run and do it for us.